"""
适用装饰器的几种场景：
    无参无返回值
    有参有返回值
    无参有返回值
    有参无返回值
"""
# 需求：定义有参无返回值的原函数：get_sum(), 用于计算两个变量的和
def print_info(fn_name):
    def inner(a, b):
        print("【友好提示】正在努力计算中...")
        return fn_name(a, b)

    return inner

@print_info
def get_sum(a, b):
    sum = a + b
    return sum

if __name__ == '__main__':
    sum = get_sum(10, 30)
    print(sum)
"""
具体执行步骤：
    1:当使用 @print_info 装饰 get_sum 时，相当于执行了：getSum = print_info(get_sum)
    2:此时，print_info(get_sum) 返回的是 inner 函数。所以，getSum 现在实际上是 inner 函数。
    3:当调用 getSum(10, 30) 时，实际上调用的是 inner(10, 30)。
    4:在 inner 函数内部，先打印提示信息，然后调用原始的函数（即之前的 get_sum，被装饰前的函数）并传入参数，得到结果，然后返回。

因此，这个程序的输出应该是：
首先打印： 【友好提示】正在努力计算中...
然后打印：40
"""